// pages/recommend/recommend.js
import request from '../../../utils/request'
import Pubsub from 'pubsub-js'
Page({
  // 获取当前时间
  getTime(){
    let date = new Date
    let dayDate = {
      day:date.getDate(),
      month:date.getMonth() + 1,
    }
    this.setData({
      dayDate,
    })
  },
  // 获取每日推荐列表
  async getRecommendSongList(){
    const res = await request({url:'/recommend/songs'})
    // console.log(res);
    if(res.code === 200){
      this.setData({
        songList:res.recommend.map(item=>{
          return {
            id:item.id,
            songName:item.name,
            name:item.album.artists[0].name,
            songUrl:item.album.blurPicUrl,
          }
        })
      })
    }
  },
  // 跳转到我们的详情页
  goDetail(e){
    // 保存当前的歌曲id
    this.setData({
      songId:e.currentTarget.id
    })
    // 跳转到我们的详情，我们query参数把歌曲id传递过去   微信小程序没有params参数
    wx.navigateTo({
      url: '../songDetail/songDetail?songId='+this.data.songId,
    })
  },
  /**
   * 页面的初始数据
   */
  data: {
    dayDate:{},// 获取时间
    songList:[],
    songId:0,// 用来保存我们的歌曲id
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    this.getTime()
    await this.getRecommendSongList()

    // 通过pubsub获取我们的详情页点击的是哪个按钮
    Pubsub.subscribe('type',(_,type)=>{
      // console.log(type);
      const songList = this.data.songList;
      // findIndex根据条件查询整个数组是否有相同的  只要找到一个相同的，往后都不再查询  有相同返回数组中的那个下标  否则返回-1
      let index = songList.findIndex(item=>item.id === this.data.songId * 1)
      // 这是用来接收  使用index 进行计算过后的下标
      let songIndex;
      if(type==='next'){// 下一首
        // 下一首不能大于数组的长度 如果是最后一首那么下一首让他返回第一首
        // 比如arr.length = 10  index = 9 + 1  >  10 - 1 返回下标0   否则就是下一首
        // 因为下标是从0开始的  length是从1开始的
        songIndex = index + 1 > songList.length - 1 ? 0 : index + 1;
      }else{// 上一首  如果当前是第一首，往上一首就返回数组的长度
        // 下标从0    length从1  所以-1
        songIndex = index - 1 < 0 ? songList.length - 1 : index - 1;
      }
      // console.log(songIndex);
      this.setData({
        songId:songList[songIndex].id
      })
      // 最后再使用Pubsub将最新的歌曲id发布
      Pubsub.publish('songId',this.data.songId)
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})